package com.tree.jobquartz.detail;

import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.springframework.stereotype.Component;

/**
 * @ClassName JobDetailManager
 * @Description: 定时任务详情管理器
 * @Author: myl
 * @create_time: 2020/10/23 11:26
 */
@Component
public class JobDetailManager {

    /**
     * 获取回测定时任务实例
     * <p>
     * 从扩展角度来讲，不建议把多个定时任务job的获取放置在一个方法中，后面遇到定制化设置参数需求是易于扩展
     * </p>
     *
     * @param backTestId
     * @param jobClass
     * @return org.quartz.JobDetail
     */
    public JobDetail getBackTestJobDetailInstance(String backTestId, Class<? extends Job> jobClass) {
        // 创建任务内容
        JobDetail jobDetail = JobBuilder.newJob(jobClass)
            // 给当前JobDetail添加K-V参数，链式调用传入多个参数，在Job实现类中根据context上下文获取对应key值
            // .usingJobData("name", "myl")
            // 添加认证信息，有3种重写的方法，我这里是其中一种，可以查看源码看其余2种*/
            .withIdentity(backTestId).build();

        return jobDetail;
    }



}
